package esmaltes.converter;

import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.ConverterException;
import javax.faces.convert.FacesConverter;
import javax.inject.Inject;

import esmaltes.model.Efeito;
import esmaltes.repository.EfeitoRepository;

@FacesConverter(forClass = Efeito.class)
public class EfeitoConverter implements Converter {

	@Inject
	private EfeitoRepository efeitoRepository;
	
	@Override
	public Object getAsObject(FacesContext context, UIComponent component, String value) {
		
		Efeito retorno = null;
		
		if (value != null) {
			retorno = this.efeitoRepository.buscarPorChave(new Integer(value));
		}
		
		//Se o usuario colocar um número de codigo inexistente na Url, essa msg de erro é retornada
        if (retorno == null) {
            String descricaoErro = "Efeito não existe.";
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, 
                    descricaoErro, descricaoErro);
            throw new ConverterException(message);
        }
		
		return retorno;
		
	}

	@Override
	public String getAsString(FacesContext context, UIComponent component, Object value) {
		
		if (value != null) {
            Efeito efeito = (Efeito) value;
            return efeito.getCodigo() == null ? null : efeito.getCodigo().toString();
        }
        return "";
	}

}
